package savet.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

/**
 * Superclasse de empregador para o software
 *
 * @author Adisson Marinho
 */
public class Empregador implements Serializable {

    /**
     * Nome do empregador
     */
    protected String nome;

    /**
     * Cadastro do empregador (CPF ou CNPJ)
     */
    protected String cadastro;

    /**
     * Numero CNAI
     */
    protected String cnae;

    /**
     * Lista de trabalhadores
     */
    protected List<Trabalhador> trabalhadores;

    /**
     * Inicio do periodo notificado
     */
    protected Date inicioPeriodoNotificado;

    /**
     * Fim do periodo notificado
     */
    protected Date fimPeriodoNotificado;

    /**
     * Construtor default
     */
    public Empregador() {
        this("", "");
    }

    /**
     * 
     * @param nome do empregador
     * @param cadastro do empregador (CNPJ ou CPJ)
     */
    public Empregador(String nome, String cadastro) {
        this.nome = nome;
        this.cadastro = cadastro;
        this.trabalhadores = new LinkedList<Trabalhador>();
    }

    public String getCadastro() {
        return cadastro;
    }

    public void setCadastro(String cadastro) {
        this.cadastro = cadastro;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public List<Trabalhador> getTrabalhadores() {
        return trabalhadores;
    }

    public void setTrabalhadores(List<Trabalhador> trabalhadores) {
        this.trabalhadores = trabalhadores;
    }

    public String getCnae() {
        return cnae;
    }

    public void setCnae(String cnae) {
        this.cnae = cnae;
    }

    public Date getFimPeriodoNotificado() {
        return fimPeriodoNotificado;
    }

    public void setFimPeriodoNotificado(Date fimPeriodoNotificado) {
        this.fimPeriodoNotificado = fimPeriodoNotificado;
    }

    public Date getInicioPeriodoNotificado() {
        return inicioPeriodoNotificado;
    }

    public void setInicioPeriodoNotificado(Date inicioPeriodoNotificado) {
        this.inicioPeriodoNotificado = inicioPeriodoNotificado;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Empregador other = (Empregador) obj;
        if ((this.cadastro == null) ? (other.cadastro != null) : !this.cadastro.equals(other.cadastro)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 97 * hash + (this.cadastro != null ? this.cadastro.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return nome + " - " + cadastro;
    }
    
}
